
package com.main.controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONArray;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import com.generico.dto.ctg.CtgCatalogo;
import com.generico.exception.AsiWebException;
import com.main.cliente.dto.SgiPersona;
import com.main.dao.AsistenciaTecnicaDAO;
import com.main.dao.ClienteDAO;
import com.main.dao.ClienteHistorialCompraDAO;
import com.main.dao.InstaladorDao;
import com.main.dao.SgiPersonaDao;
import com.main.dao.UserDAO;
import com.main.dso.InstaladorService;
import com.main.java.AsistenciaTecnica;
import com.main.java.Cliente;
import com.main.java.Empleado;
import com.main.java.Instalador;
import com.main.java.Producto;
import com.main.java.Requisicion;
import com.main.service.AsistenciaTecnicaService;
import com.web.security.CustomUser;
import com.web.util.GenericoUtil;

@Controller
@RequestMapping("/empleado")
public class InstaladorController extends BaseController{
	
	@Autowired
	private UserDAO userDAO;
	
	@Autowired
	private InstaladorDao instaladorDao;
	
	@Autowired
	private InstaladorService instaladorService;
	
	@RequestMapping("/instaladorView")
	public String view(ModelMap model){
			try {
				model.put("instaladoresDisponibles", JSONArray.fromObject(instaladorService.obtenerListaInstaladores()));
				model.put("instaladoresEnUso", JSONArray.fromObject(instaladorDao.obtenerInstalador()));
				model.put("usuarioId", GenericoUtil.getSgdUsuarioIdFromAcegi());
				model.put("userName", GenericoUtil.getUserName());
				model.put("rol", GenericoUtil.getRol().toString());
			} catch (Exception e) {
				e.printStackTrace();
			}

		return "empleado/instalador";
	}
	
	@RequestMapping(value = "/guardarGrupoInstaladores", method = RequestMethod.POST)
	public void guardarGrupo(HttpServletResponse response,
			@RequestParam(value = "idInstalador") String idInstalador,
			@RequestParam(value = "estadoInstalador") String estadoInstalador,
			@RequestParam(value = "nombreGrupo") String nombreGrupo,
			@RequestParam(value = "empleadoId") Long empleadoId){
		Map<String, Object> result = new HashMap<String, Object>();
		List<Long> nombreGrupoId = new ArrayList<Long>();

		try{
			if(nombreGrupo.isEmpty()){
				result.put(FAILURE, true);
				result.put(MESSAGE, "Debe LLenar Los Campos Correctamente.");
			}else{
				
				/**Quitando virgulias y dejando id**/
				String[] idInstaladores = idInstalador.split("~");
				String[] estadoInstaladores = estadoInstalador.split("~");
				
				for (int i = 0; i < idInstaladores.length; i++) {
					
					/**entra al if si se esta checked***/
					if (estadoInstaladores[i].equals("false")){
						
						
					Instalador instalador = new Instalador();
					instalador.setInstaladorNombreGrupo(nombreGrupo);
					instalador.setInstaladorFechaCreacion(GenericoUtil.dateFormatAsDD_MM_YYYY___HH_MM.format(new Date()));
					instalador.setInstaladorEstado("1");
					instalador.setUsuarioInstaladorId(userDAO.getUserById(Long.parseLong(idInstaladores[i])));
					instalador.setEmpleadoCreadorGrupoId(userDAO.getUserById(empleadoId));
					instaladorDao.guardarOActualizarInstalador(instalador);
					
					nombreGrupoId.add(instalador.getInstaladorId());
					instalador.setInstaladorNombreGrupoId(nombreGrupoId.get(0));
					instaladorDao.guardarOActualizarInstalador(instalador);
					
					
					
					}
					
				}
				
				result.put("instaladoresDisponibles", JSONArray.fromObject(instaladorService.obtenerListaInstaladores()));
				result.put("instaladorEnUso", JSONArray.fromObject(JSONArray.fromObject(instaladorDao.obtenerInstalador())));
				
				result.put(MESSAGE, "Grupo Creado!");
				result.put(SUCCESS, true);
				
			}

		} catch (AsiWebException e) {
			result.put(FAILURE, true);
			result.put(MESSAGE, GenericoUtil.getExceptionMessage(e));
			logger.error(e, e);
		} catch (Exception e) {
			result.put(FAILURE, true);
			result.put(MESSAGE, GenericoUtil.ERROR_MESSAGE);
			logger.error(e, e);
		}
		serializeObject(result, response);
	}
	
	@RequestMapping(value = "/actualizarGrupoInstaladores", method = RequestMethod.POST)
	public void actualizarGrupoInstaladores(HttpServletResponse response,
			@RequestParam(value = "idInstalador") String idInstalador,
			@RequestParam(value = "estadoInstalador") String estadoInstalador){
		Map<String, Object> result = new HashMap<String, Object>();

		try{
			if(estadoInstalador.isEmpty()){
				result.put(FAILURE, true);
				result.put(MESSAGE, "Debe Seleccionar Un Instalador Para Continuar.");
			}else{
				
				/**Quitando virgulias y dejando id**/
				String[] idInstaladores = idInstalador.split("~");
				String[] estadoInstaladores = estadoInstalador.split("~");
				
				for (int i = 0; i < idInstaladores.length; i++) {
					
					/**entra al if si se esta checked***/
					if (estadoInstaladores[i].equals("false")){
						
						
					Instalador instalador = new Instalador();
					instalador = instaladorDao.encInstaladorPorId(Long.parseLong(idInstaladores[i]));
					instalador.setInstaladorEstado("0");
					instaladorDao.guardarOActualizarInstalador(instalador);
					
					
					
					}
					
				}
				
				result.put("instaladoresDisponibles", JSONArray.fromObject(instaladorService.obtenerListaInstaladores()));
				result.put("instaladorEnUso", JSONArray.fromObject(JSONArray.fromObject(instaladorDao.obtenerInstalador())));
				
				result.put(MESSAGE, "Accion completada con Exito.");
				result.put(SUCCESS, true);
				
			}

		} catch (AsiWebException e) {
			result.put(FAILURE, true);
			result.put(MESSAGE, GenericoUtil.getExceptionMessage(e));
			logger.error(e, e);
		} catch (Exception e) {
			result.put(FAILURE, true);
			result.put(MESSAGE, GenericoUtil.ERROR_MESSAGE);
			logger.error(e, e);
		}
		serializeObject(result, response);
	}
	
}
	
	
	
	
	

